/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.actions;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.*;
import java.text.*;
import java.util.Locale;
import java.util.Date;
import java.util.Calendar;

/**
 *
 * @author dario
 */
public class AltaSorteoyGanadoresForm extends ActionForm {

    private String fechaInicio;
    private String fechaFin;
    private String cantidad;

    public AltaSorteoyGanadoresForm() {
    }

    public String getFechaFin() {
        return fechaFin;
    }

    public String getCantidad() {
        return cantidad;
    }

    public String getFechaInicio() {
        return fechaInicio;
    }

    public void setCantidad(String Cantidad) {
         this.cantidad = Cantidad;
    }
    public void setFechaFin(String fechaFin) {
        this.fechaFin = fechaFin;
    }

    public void setFechaInicio(String fechaInicio) {
        this.fechaInicio = fechaInicio;
    }


    /**
     * This is the action called from the Struts framework.
     * @param mapping The ActionMapping used to select this instance.
     * @param request The HTTP Request we are processing.
     * @return
     */
   @Override
   public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
        ActionErrors errors = new ActionErrors();

            Date otraFI = new Date();

            Date otraFF = new Date();


            //Cargo fecha actual
            Calendar calendario = Calendar.getInstance();
            SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yyyy");

            String fechaDeHoyString = formatoFecha.format(calendario.getTime());

            Date fechaHoy = new Date();

            try{
                fechaHoy = formatoFecha.parse(fechaDeHoyString);
                otraFI = formatoFecha.parse(getFechaInicio());
                otraFF = formatoFecha.parse(getFechaFin());
            }
            catch(ParseException e){}


        if(getFechaInicio().isEmpty()){
            errors.add("fechaI", new ActionMessage("altaSorteo.errorFechaInicioVacio"));
        }else{
                if (!isFechaValida(getFechaInicio())){
                    errors.add("fechaI", new ActionMessage("error.fnac.invalida"));
                }else{
                    if(otraFI.after(fechaHoy)){
                        errors.add("fechaI", new ActionMessage("altaSorteo.errorFechaInicioMayorHoy"));
                    }else{
                        if(otraFI.after(otraFF)){
                                errors.add("fechaI", new ActionMessage("altaSorteo.errorFechaInicioMayor"));
                            }

                    }
                }
        }

        if(getFechaFin().isEmpty()){
            errors.add("fechaF", new ActionMessage("altaSorteo.errorFechaFinVacio"));
        }else{
                if (!isFechaValida(getFechaFin())){
                    errors.add("fechaF", new ActionMessage("error.fnac.invalida"));
                }else {
                        if(otraFF.after(fechaHoy)){
                            errors.add("fechaF", new ActionMessage("altaSorteo.errorFechaFinMayorHoy"));
                        }else{
                            if(otraFF.before(otraFI)){
                            errors.add("fechaF", new ActionMessage("altaSorteo.errorFechaFinMenor"));
                            }
                        }

                }
        }
        try
        {
        if (getCantidad().isEmpty() || Integer.parseInt(getCantidad()) < 1){
            errors.add("cant", new ActionMessage("altaSorteo.errorCantidadSinNada"));
        }

        } catch (Exception e) {errors.add("cant", new ActionMessage("altaSorteo.errorCantidadSinNada")); }
    return errors;
   }

   public boolean isFechaValida(String fechax) {
        try
        {
            SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/mm/yyyy",Locale.getDefault());
            formatoFecha.setLenient(false);
            formatoFecha.parse(fechax);
        }
        catch (ParseException e)
        {
            return false;
        }
        return true;
    }

   /*public Date transformoFecha(String fechax){
       Date fechaBien = new Date();

       try{
       SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yyyy",Locale.getDefault());
       fechaBien = formatoFecha.parse(fechax);
       }
       catch (ParseException e){ }
       return fechaBien;
   }*/
}
